Skip to content

Fix VoiceOver labels in share extension folder picker#4111

Open
web3blind wants to merge 1 commit into
nextcloud:masterfrom
web3blind:fix-share-extension-voiceover-folders
Open

Fix VoiceOver labels in share extension folder picker#4111
web3blind wants to merge 1 commit into
nextcloud:masterfrom
web3blind:fix-share-extension-voiceover-folders

Conversation

@web3blind
Copy link
Copy Markdown

@web3blind web3blind commented May 15, 2026

Summary

  • add an explicit accessibility label to folder cells in the share extension target-folder picker
  • include the visible folder name and metadata text that is already shown in the cell
  • expose folder rows as actionable elements for VoiceOver users

Issue

Fixes #4099

Testing

  • Not run: iOS/Xcode build is not available in this environment
  • Static inspection: verified the share extension uses NCListCell for target folders and now calls setAccessibility(label:value:) for each cell

Accessibility impact

This should let VoiceOver announce the folder name/details while sharing a file into Nextcloud from another app, instead of focusing unnamed selectable rows.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Improves VoiceOver support in the Share Extension’s target-folder picker by explicitly setting accessibility metadata on folder cells so selectable rows are announced with meaningful text.

Changes:

  • Build an accessibilityLabel from the folder name plus existing cell metadata text.
  • Apply the accessibility label/value to NCListCell instances in the share extension.
  • Mark folder rows as actionable by setting accessibilityTraits to .button.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +107 to +112
let accessibilityLabel = [metadata.fileNameView, cell.labelInfo.text, cell.labelSubinfo.text]
.compactMap { $0?.trimmingCharacters(in: .whitespacesAndNewlines) }
.filter { !$0.isEmpty }
.joined(separator: ", ")
cell.setAccessibility(label: accessibilityLabel, value: "")
cell.accessibilityTraits = .button
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Accessibility: BLOCKING - Folder selection when sharing a file from another app not accessible with the VoiceOver screen reader

2 participants